package cn.fhkj.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * @author cn.fhkj
 * @date 创建时间：2019年7月1日 上午11:46:37
 */
@Configuration
@EnableSwagger2
@Profile({"dev", "test"})
public class Swagger2Configuration {
    /**
     * 应用名称
     */
    @Value("${spring.application.name}")
    private String appName;

    /**
     * 创建API应用 appinfo()增加API相关信息
     * 通过select()函数返回一个ApiSelectorBuilder实例，用来控制那些接口暴露给Swagger来展现
     * 本例采用置顶扫描的包路径来定义指定要建立API的目录
     *
     * @return
     */
    @Bean
    public Docket createRestApi() {
        Docket docket = new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                //todo 基包
                .apis(RequestHandlerSelectors.basePackage("cn.fhkj.*"))
                .paths(PathSelectors.any()).build();
        return docket;
    }

    /**
     * 创建改API的基本信息（这些基本信息会展示在文档页面中） 访问地址： http://项目实际地址/swagger-ui.html
     *
     * @return
     */

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title(appName + " API 文档")
                .description(appName + " API 文档")
                .termsOfServiceUrl("http://a.b.com")
                .contact(new Contact("xxx", "", "xxx@yyy.com"))
                //todo api版本
                .version("")
                .build();
    }


//    /**
//     * swagger ui资源映射
//     *
//     * @param registry
//     */
//    @Override
//    public void addResourceHandlers(ResourceHandlerRegistry registry) {
//        registry.addResourceHandler("swagger-ui.html")
//                .addResourceLocations("classpath:/META-INF/resources/");
//
//        registry.addResourceHandler("/webjars/**")
//                .addResourceLocations("classpath:/META-INF/resources/webjars/");
//    }
//
//    /**
//     * swagger-ui.html路径映射，浏览器中使用/api-docs访问
//     *
//     * @param registry
//     */
//    @Override
//    public void addViewControllers(ViewControllerRegistry registry) {
//        registry.addRedirectViewController("/api-docs", "/swagger-ui.html");
//    }


}
